home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / linux / irda.h < prev    next >
C/C++ Source or Header  |  2008-10-24  |  8KB  |  253 lines

  1. /*********************************************************************
  2.  *                
  3.  * Filename:      irda.h
  4.  * Version:       
  5.  * Description:   
  6.  * Status:        Experimental.
  7.  * Author:        Dag Brattli <dagb@cs.uit.no>
  8.  * Created at:    Mon Mar  8 14:06:12 1999
  9.  * Modified at:   Sat Dec 25 16:06:42 1999
  10.  * Modified by:   Dag Brattli <dagb@cs.uit.no>
  11.  * 
  12.  *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
  13.  *      
  14.  *     This program is free software; you can redistribute it and/or 
  15.  *     modify it under the terms of the GNU General Public License as 
  16.  *     published by the Free Software Foundation; either version 2 of 
  17.  *     the License, or (at your option) any later version.
  18.  *  
  19.  *     Neither Dag Brattli nor University of Troms├╕ admit liability nor
  20.  *     provide warranty for any of this software. This material is 
  21.  *     provided "AS-IS" and at no charge.
  22.  *
  23.  ********************************************************************/
  24.  
  25. #ifndef KERNEL_IRDA_H
  26. #define KERNEL_IRDA_H
  27.  
  28. /* Please do *not* add any #include in this file, this file is
  29.  * included as-is in user space.
  30.  * Please fix the calling file to properly included needed files before
  31.  * this one, or preferably to include <net/irda/irda.h> instead.
  32.  * Jean II */
  33.  
  34. /* Hint bit positions for first hint byte */
  35. #define HINT_PNP         0x01
  36. #define HINT_PDA         0x02
  37. #define HINT_COMPUTER    0x04
  38. #define HINT_PRINTER     0x08
  39. #define HINT_MODEM       0x10
  40. #define HINT_FAX         0x20
  41. #define HINT_LAN         0x40
  42. #define HINT_EXTENSION   0x80
  43.  
  44. /* Hint bit positions for second hint byte (first extension byte) */
  45. #define HINT_TELEPHONY   0x01
  46. #define HINT_FILE_SERVER 0x02
  47. #define HINT_COMM        0x04
  48. #define HINT_MESSAGE     0x08
  49. #define HINT_HTTP        0x10
  50. #define HINT_OBEX        0x20
  51.  
  52. /* IrLMP character code values */
  53. #define CS_ASCII         0x00
  54. #define    CS_ISO_8859_1    0x01
  55. #define    CS_ISO_8859_2    0x02
  56. #define    CS_ISO_8859_3    0x03
  57. #define    CS_ISO_8859_4    0x04
  58. #define    CS_ISO_8859_5    0x05
  59. #define    CS_ISO_8859_6    0x06
  60. #define    CS_ISO_8859_7    0x07
  61. #define    CS_ISO_8859_8    0x08
  62. #define    CS_ISO_8859_9    0x09
  63. #define CS_UNICODE       0xff
  64.  
  65. /* These are the currently known dongles */
  66. typedef enum {
  67.     IRDA_TEKRAM_DONGLE       = 0,
  68.     IRDA_ESI_DONGLE          = 1,
  69.     IRDA_ACTISYS_DONGLE      = 2,
  70.     IRDA_ACTISYS_PLUS_DONGLE = 3,
  71.     IRDA_GIRBIL_DONGLE       = 4,
  72.     IRDA_LITELINK_DONGLE     = 5,
  73.     IRDA_AIRPORT_DONGLE      = 6,
  74.     IRDA_OLD_BELKIN_DONGLE   = 7,
  75.     IRDA_EP7211_IR           = 8,
  76.     IRDA_MCP2120_DONGLE      = 9,
  77.     IRDA_ACT200L_DONGLE      = 10,
  78.     IRDA_MA600_DONGLE        = 11,
  79.     IRDA_TOIM3232_DONGLE     = 12,
  80.     IRDA_EP7211_DONGLE       = 13,
  81. } IRDA_DONGLE;
  82.  
  83. /* Protocol types to be used for SOCK_DGRAM */
  84. enum {
  85.     IRDAPROTO_UNITDATA = 0,
  86.     IRDAPROTO_ULTRA    = 1,
  87.     IRDAPROTO_MAX
  88. };
  89.  
  90. #define SOL_IRLMP      266 /* Same as SOL_IRDA for now */
  91. #define SOL_IRTTP      266 /* Same as SOL_IRDA for now */
  92.  
  93. #define IRLMP_ENUMDEVICES        1    /* Return discovery log */
  94. #define IRLMP_IAS_SET            2    /* Set an attribute in local IAS */
  95. #define IRLMP_IAS_QUERY          3    /* Query remote IAS for attribute */
  96. #define IRLMP_HINTS_SET          4    /* Set hint bits advertised */
  97. #define IRLMP_QOS_SET            5
  98. #define IRLMP_QOS_GET            6
  99. #define IRLMP_MAX_SDU_SIZE       7
  100. #define IRLMP_IAS_GET            8    /* Get an attribute from local IAS */
  101. #define IRLMP_IAS_DEL         9    /* Remove attribute from local IAS */
  102. #define IRLMP_HINT_MASK_SET    10    /* Set discovery filter */
  103. #define IRLMP_WAITDEVICE    11    /* Wait for a new discovery */
  104.  
  105. #define IRTTP_MAX_SDU_SIZE IRLMP_MAX_SDU_SIZE /* Compatibility */
  106.  
  107. #define IAS_MAX_STRING         256    /* See IrLMP 1.1, 4.3.3.2 */
  108. #define IAS_MAX_OCTET_STRING  1024    /* See IrLMP 1.1, 4.3.3.2 */
  109. #define IAS_MAX_CLASSNAME       60    /* See IrLMP 1.1, 4.3.1 */
  110. #define IAS_MAX_ATTRIBNAME      60    /* See IrLMP 1.1, 4.3.3.1 */
  111. #define IAS_MAX_ATTRIBNUMBER   256    /* See IrLMP 1.1, 4.3.3.1 */
  112. /* For user space backward compatibility - may be fixed in kernel 2.5.X
  113.  * Note : need 60+1 ('\0'), make it 64 for alignement - Jean II */
  114. #define IAS_EXPORT_CLASSNAME       64
  115. #define IAS_EXPORT_ATTRIBNAME     256
  116.  
  117. /* Attribute type needed for struct irda_ias_set */
  118. #define IAS_MISSING 0
  119. #define IAS_INTEGER 1
  120. #define IAS_OCT_SEQ 2
  121. #define IAS_STRING  3
  122.  
  123. #define LSAP_ANY              0xff
  124.  
  125. struct sockaddr_irda {
  126.     sa_family_t sir_family;   /* AF_IRDA */
  127.     __u8        sir_lsap_sel; /* LSAP selector */
  128.     __u32       sir_addr;     /* Device address */
  129.     char        sir_name[25]; /* Usually <service>:IrDA:TinyTP */
  130. };
  131.  
  132. struct irda_device_info {
  133.     __u32       saddr;    /* Address of local interface */
  134.     __u32       daddr;    /* Address of remote device */
  135.     char        info[22]; /* Description */
  136.     __u8        charset;  /* Charset used for description */
  137.     __u8        hints[2]; /* Hint bits */
  138. };
  139.  
  140. struct irda_device_list {
  141.        __u32 len;
  142.        struct irda_device_info dev[1];
  143. };
  144.  
  145. struct irda_ias_set {
  146.     char irda_class_name[IAS_EXPORT_CLASSNAME];
  147.     char irda_attrib_name[IAS_EXPORT_ATTRIBNAME];
  148.     unsigned int irda_attrib_type;
  149.     union {
  150.         unsigned int irda_attrib_int;
  151.         struct {
  152.             unsigned short len;
  153.             __u8 octet_seq[IAS_MAX_OCTET_STRING];
  154.         } irda_attrib_octet_seq;
  155.         struct {
  156.             __u8 len;
  157.             __u8 charset;
  158.             __u8 string[IAS_MAX_STRING];
  159.         } irda_attrib_string;
  160.     } attribute;
  161.     __u32       daddr;    /* Address of device (for some queries only) */
  162. };
  163.  
  164. /* Some private IOCTL's (max 16) */
  165. #define SIOCSDONGLE    (SIOCDEVPRIVATE + 0)
  166. #define SIOCGDONGLE    (SIOCDEVPRIVATE + 1)
  167. #define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2)
  168. #define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3)
  169. #define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4)
  170. #define SIOCGRECEIVING (SIOCDEVPRIVATE + 5)
  171. #define SIOCSMODE      (SIOCDEVPRIVATE + 6)
  172. #define SIOCGMODE      (SIOCDEVPRIVATE + 7)
  173. #define SIOCSDTRRTS    (SIOCDEVPRIVATE + 8)
  174. #define SIOCGQOS       (SIOCDEVPRIVATE + 9)
  175.  
  176. /* No reason to include <linux/if.h> just because of this one ;-) */
  177. #define IRNAMSIZ 16 
  178.  
  179. /* IrDA quality of service information (must not exceed 16 bytes) */
  180. struct if_irda_qos {
  181.     unsigned long  baudrate;
  182.     unsigned short data_size;
  183.     unsigned short window_size;
  184.     unsigned short min_turn_time;
  185.     unsigned short max_turn_time;
  186.     unsigned char  add_bofs;
  187.     unsigned char  link_disc;
  188. };
  189.  
  190. /* For setting RTS and DTR lines of a dongle */
  191. struct if_irda_line {
  192.     __u8 dtr;
  193.     __u8 rts;
  194. };
  195.  
  196. /* IrDA interface configuration (data part must not exceed 16 bytes) */
  197. struct if_irda_req {
  198.     union {
  199.         char ifrn_name[IRNAMSIZ];  /* if name, e.g. "irda0" */
  200.     } ifr_ifrn;
  201.     
  202.     /* Data part */
  203.     union {
  204.         struct if_irda_line ifru_line;
  205.         struct if_irda_qos  ifru_qos;
  206.         unsigned short      ifru_flags;
  207.         unsigned int        ifru_receiving;
  208.         unsigned int        ifru_mode;
  209.         unsigned int        ifru_dongle;
  210.     } ifr_ifru;
  211. };
  212.  
  213. #define ifr_baudrate  ifr_ifru.ifru_qos.baudrate
  214. #define ifr_receiving ifr_ifru.ifru_receiving 
  215. #define ifr_dongle    ifr_ifru.ifru_dongle
  216. #define ifr_mode      ifr_ifru.ifru_mode
  217. #define ifr_dtr       ifr_ifru.ifru_line.dtr
  218. #define ifr_rts       ifr_ifru.ifru_line.rts
  219.  
  220.  
  221. /* IrDA netlink definitions */
  222. #define IRDA_NL_NAME "irda"
  223. #define IRDA_NL_VERSION 1
  224.  
  225. enum irda_nl_commands {
  226.     IRDA_NL_CMD_UNSPEC,
  227.     IRDA_NL_CMD_SET_MODE,
  228.     IRDA_NL_CMD_GET_MODE,
  229.  
  230.     __IRDA_NL_CMD_AFTER_LAST
  231. };
  232. #define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1)
  233.  
  234. enum nl80211_attrs {
  235.     IRDA_NL_ATTR_UNSPEC,
  236.     IRDA_NL_ATTR_IFNAME,
  237.     IRDA_NL_ATTR_MODE,
  238.  
  239.     __IRDA_NL_ATTR_AFTER_LAST
  240. };
  241. #define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1)
  242.  
  243. /* IrDA modes */
  244. #define IRDA_MODE_PRIMARY   0x1
  245. #define IRDA_MODE_SECONDARY 0x2
  246. #define IRDA_MODE_MONITOR   0x4
  247.  
  248. #endif /* KERNEL_IRDA_H */
  249.  
  250.  
  251.  
  252.  
  253.